Implement new event streams API#1035
Conversation
core/src/main/java/software/amazon/smithy/java/core/serde/event/DefaultEventStreamReader.java
Outdated
Show resolved
Hide resolved
| try { | ||
| LOGGER.debug("Writing event {} (latch count: {})", | ||
| event.getClass().getSimpleName(), | ||
| readyLatch.getCount()); |
There was a problem hiding this comment.
getCount incurs a volatile read of readyLatch's backing state, please only call this if debug logs are enabled
core/src/main/java/software/amazon/smithy/java/core/serde/event/EventPipeStream.java
Outdated
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/DefaultEventStreamWriter.java
Outdated
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/DefaultEventStreamWriter.java
Outdated
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/DefaultEventStreamWriter.java
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/DefaultEventStreamWriter.java
Outdated
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/DefaultEventStreamWriter.java
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/EventPipeStream.java
Outdated
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/DefaultEventStreamReader.java
Outdated
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/DefaultEventStreamReader.java
Outdated
Show resolved
Hide resolved
http/http-binding/src/main/java/software/amazon/smithy/java/http/binding/RequestSerializer.java
Outdated
Show resolved
Hide resolved
| if (eventStream != null && operation instanceof InputEventStreamingApiOperation<?, ?, ?>) { | ||
| builder.body(EventStreamFrameEncodingProcessor.create(eventStream, eventStreamEncodingFactory)); | ||
| ProtocolEventStreamWriter<SerializableStruct, SerializableStruct, Frame<?>> writer = | ||
| ProtocolEventStreamWriter.toInternal(eventStream); |
There was a problem hiding this comment.
toInternal seems like a leftover from the previous naming. Just call it of: ProtocolEventStreamWriter.of
core/src/main/java/software/amazon/smithy/java/core/serde/event/DefaultEventStreamWriter.java
Outdated
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/EventStream.java
Outdated
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/ProtocolEventStreamWriter.java
Outdated
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/ProtocolEventStreamWriter.java
Outdated
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/EventPipeStream.java
Outdated
Show resolved
Hide resolved
core/src/main/java/software/amazon/smithy/java/core/serde/event/EventPipeStream.java
Show resolved
Hide resolved
Co-authored-by: Michael Dowling <michael@mtdowling.com>
| int read = inputStream.read(buffer); | ||
|
|
||
| if (read == -1) { | ||
| var error = new IOException("Unexpected end of stream while reading initial event"); |
There was a problem hiding this comment.
This is going to catch the IOException and call closeWithError twice
There was a problem hiding this comment.
duh, let me just throw the exception as originally suggested 🤦
| /** | ||
| * Default timeout to block waiting to write. | ||
| */ | ||
| private static final int WRITE_TIMEOUT_MILLIS = 1500; |
There was a problem hiding this comment.
Main concern here is -- is this universally enough time? I am not positive 1.5 seconds is enough. Not sure if this has to be configurable yet, but maybe this should be more like 10 seconds or something like that to account for long setup, but still give some mitigation against hanging forever.
There was a problem hiding this comment.
Yea, I don't think there's a way to finding that out, 1.5 seemed like a good one but we can use 10 as well. Let me change it.
Issue #, if available:
Description of changes:
Implements a new event streams API that's VT friendly by blocking when the caller reads and writes events.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.